﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cesave.Domain.PermisosModule.Entities;
using System.ComponentModel;
using Cesave.Application.Permisos.ServiceAgent;

namespace Cesave.Presentation.Permisos.WinForms.Client.ViewModels.Permisos
{
    /// <summary>
    /// Manejo de secciones de área.
    /// </summary>
	public partial class ExpedicionViewModel
    {
        #region Private properties

        /// <summary>
        /// Lista de secciones de área.
        /// </summary>
        private List<AreaSeccion> _areaSecciones;

        #endregion

        #region Public properties

        /// <summary>
        /// Lista de secciones de área.
        /// </summary>
        public List<AreaSeccion> AreaSecciones
        {
            get
            {
                return _areaSecciones;
            }
            private set
            {
                _areaSecciones = value;
                if (_areaSecciones != null)
                    RaisePropertyChanged("AreaSecciones");
            }
        }

        #endregion

        #region Private properties

        /// <summary>
        /// Carga las secciones del área de influencia.
        /// </summary>
        private void LoadAreaSecciones()
        {
            using (BackgroundWorker worker = new BackgroundWorker())
            {
                worker.DoWork += (sender, e) =>
                {
                    using (PermisosModuleServiceWrapper service = new PermisosModuleServiceWrapper())
                    {
                        e.Result = service.FindAreaSeccionesForExpedicion(_pusSettings.Junta.JuntaGuid, Area.AreaGuid);
                    }
                };
                worker.RunWorkerCompleted += (sender, e) =>
                {
                    if (!e.Cancelled && e.Error == null)
                        AreaSecciones = e.Result as List<AreaSeccion>;
                    else if (e.Error != null)
                        ShowMessage(e.Error.Message);
                };
                worker.WorkerSupportsCancellation = true;
                worker.RunWorkerAsync();
            }
        }

        /// <summary>
        /// Valida que la sección esté contenida en en las secciones de área.
        /// </summary>
        /// <param name="seccion"></param>
        private void ValidateSeccion(Seccion seccion)
        {

        }

        #endregion

    }
}
